package org.bulu.project.system.service;

import org.apache.ibatis.annotations.Select;
import org.bulu.project.common.result.Result;
import org.bulu.project.system.model.entity.Video;
import org.bulu.project.system.model.entity.VideoStats;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.List;

@Service
public interface VideoService {
    /**
     * 根据uid获取视频信息
     * @return  包含视频消息
     */
    List<Video> getVideosByIds(Long uid);

    /**
     * 根据vid查询单个视频信息，包含用户信息和分区信息
     * @param vid 视频ID
     * @return 包含用户信息、分区信息、视频信息的map
     */
    Video getVideoWithDataById(Integer vid);


    /**
     * 根据vid删除视频以及相关信息
     */
    int delVideo(Integer vid) throws IOException;

    /**
     * 修改视频相关消息
     */
    int updateVideo(Video video) throws IOException;

    /**
     * 根据有序vid列表查询视频以及相关信息
     * @param list  vid有序列表
     * @return  有序的视频列表
     */
    List<Video> getVideosWithDataByIdList(List<Integer> list);

    /**
     * 更新视频状态，包括过审、不通过、删除，其中审核相关需要管理员权限，删除可以是管理员或者投稿用户
     * @param vid   视频ID
     * @param status 要修改的状态，1通过 2不通过 3删除
     * @return 无data返回，仅返回响应信息
     */
    Result updateVideoStatus(Integer vid, Integer status) throws IOException;

    VideoStats getVideoStats(Integer vid);
}
